<?php
require_once('lib/standard.php');
set_pineza(TRUE);
?>
<script type="text/javascript">
//<![CDATA[
window.onload = function() {
	init();

	/*
	Κάθε τόσο κάνουμε ένα Ajax request στο οποίο επανελέγχουμε το
	login name του χρήστη, ώστε να μην γίνεται διαγραφή του session
	όσο ο χρήστης παραμένει στο πρόγραμμα.
	*/

	setTimeout(keepAlive, 5000);

	/*
	Το array `pickedNotes' περιέχει ως δείκτες τους κωδικούς των
	σημειωμάτων που έχουν επιλεγεί για μεταφορά. Αυτό το array
	ορίζεται εδώ (στην πατρογονική σελίδα), καθώς πρέπει να έχουμε
	πρόσβαση και από τα δύο βασικά frames (παλέτα πινάκων στο
	sidebar όπου θα επιλέξουμε πίνακα αφίξεως, και τρέχων πίνακας
	όπου επιλέγουμε σημειώματα).
	*/
	
	pineza.pickedNotes = {};

	/*
	Το `sizeSB' είναι το τρέχον μέγεθος του frame της παλέτας
	πινάκων του sidebar. Βασικά παίρνει δύο τιμές (0 = κανονικό,
	και 1 = μικρό), αλλά υπάρχει η σκέψη να παίρνει και τρίτη
	τιμή με την οποία θα εξφανίζεται για λόγους οικονομίας χώρου.
	*/

	pineza.sizeSB = 0;

	/*
	Το timer `searchTimer' σχετίζεται με την πληκτρολόγηση στο
	πεδίο αναζήτησης σημειωμάτων. Πράγματι, καθώς ο χρήστης
	πληκτρολογεί στο πεδίο αναζήτησης, το πρόγραμμα μαζεύει
	και εμφανίζει τα σημειώματα τα οποία πληρούν το κριτήριο
	αναζήτησης. Αυτό, όμως, δεν μπορεί να γίνεται σε μηδενικό
	χρόνο, καθώς θα ήταν κουραστικό και για το χρήστη, αλλά
	και για τη μηχανή, να παρεισφρύει το μάζεμα και η εμφάνιση
	των αποτελεσμάτων στην πληκτρολόγηση του κριτηρίου
	*/

	pineza.searchTimer = false;

	/*
	Το `boardFrame' είναι το frame της ανάρτησης σημειωμάτων
	ως DOM object. Το κρατάω σε χωριστή μεταβλητή για λόγους
	ταχύτητας, καθώς το χρειάζομαι συνέχεια.
	*/

	pineza.boardFrame = getelid('board');
}

/*
Η function `hideShowSB' εκτελεί την απόκρυψη και την εμφάνιση της
πλευρικής παλέτας πινάκων. Προς το παρόν η παλέτα πινάκων παίρνει
δύο μεγέθη (στενό και κανονικό), αλλά στο μέλλον μπορεί να προστεθεί
πλήρης απόκρυψη.
*/

function hideShowSB() {
	var fsb = getelid('boardSB');
	var csb = getelid('SB');
	switch (pineza.sizeSB) {
	case 0:
		fsb.oriMaxWidth = fsb.style.maxWidth;
		fsb.style.maxWidth = '1.7cm';

		csb.oriWidth = csb.style.width;
		csb.style.width = '2.0cm';

		pineza.sizeSB = 1;
		break;
	default:
		fsb.style.maxWidth = fsb.oriMaxWidth;
		csb.style.width = csb.oriWidth;

		pineza.sizeSB = 0;
		break;
	}
}

/*
Η function `searchAuto' καλείται στο "onkeyup" του πεδίου αναζήτησης.
Ελέγχεται το πλήκτρο και εφόσον δεν πρόκειται για ειδικό πλήκτρο
(Enter, Escape κλπ) ελέγχεται ο χρόνος του προηγούμενου πληκτρισμού
και δρομολογείται αυτόματη αναζήτηση, αν ο χρόνος είναι ικανός.
*/

function searchAuto(e, fld) {
	if (window.event)
		var key = e.keyCode;
	else if (e.which)
		key = e.which;
	else
		return false;

	switch (key) {
	case 13:	/* Enter key */
		searchNow(fld, false);
		break;
	case 27:	/* Esc key */
		/*
		Πρόκειται για καθαρισμό του πεδίου αναζήτησης.
		Στον Firefox δεν δουλεύει με απευθείας κλήση· ξαναφέρνει
		την τρέχουσα τιμή. Για το λόγο αυτό καθαρίζω με ετεροχρονισμένη
		κλήση.
		*/
		setTimeout(function() {
			cleanupSearch(fld);
		}, 100);
		break;
	default:
		if (pineza.searchTimer) {
			clearTimeout(pineza.searchTimer);
			pineza.searchTimer = false;
		}

		/*
		Ο χρόνος που θεωρείται ικανός για να ξεκινήσει αυτόματη
		αναζήτηση έχει να κάνει και με το πόσοι χαρακτήρες έχουν
		ήδη πληκτρολογηθεί. Με λίγους χαρακτήρες στο πεδίο δίνεται
		περισσότερος χρόνος, καθώς είναι πολύ πιθανό να μην έχει
		τελειώσει ο χρήστης την πληκτρολόγηση.
		*/
		var noKey = false;
		switch (fld.value.length) {
		case 0:
			var delay = 100;
			var noKey = true;
			break;
		case 1:
			delay = 800;
			break;
		case 2:
			delay = 600;
			break;
		default:
			delay = 200;
		}

		pineza.searchTimer = setTimeout(function() {
			searchNow(fld, noKey);
		}, delay);
	}

	return true;
}

/*
Η παρακάτω function εκτελεί την αναζήτηση και προβάλλει νέα σελίδα
με τα αποτελέσματα. Ως πρώτη παράμετρος δίνεται το πεδίο αναζήτησης.
Η δεύτερη παράμετρος δείχνει αν το πεδίο της αναζήτησης έχει μείνει
κενό μετά από πληκτρολόγηση delete ή backspace. Σε αυτή την περίπτωση
επαναπροβάλλεται ο default πίνακας· αυτό δεν είναι το ίδιο με το
να πατήσω το πλήκτρο [Search] με κενό κωδικό, όπου υπονοούμε ρητά
αναζήτηση με κενό κωδικό, οπότε προβάλλονται όλα τα σημειώματα
από όλους τους πίνακες.
*/

function searchNow(fld, noKey) {
	if (fld === undefined)
		fld = getelid('search');

	var search = (noKey ? '' : '?search=' + uri(fld.value));
	if (pineza.boardFrame)
		pineza.boardFrame.src = pineza.server +
			'board/index.php' + search;
}

function cleanupSearch(fld) {
	fld.value = '';
	if (pineza.searchTimer) {
		clearTimeout(pineza.searchTimer);
		pineza.searchTimer = false;
	}
}
//]]>
</script>
<?php
arxi_selidas();
?>
<table width="100%">
<tr>
<td id="SB" class="tbldbg" style="vertical-align: top; width: 6.2cm;">
	<iframe id="boardSB" src="<?php print $pineza->server; ?>boardSB/index.php"
		class="boardSidebar" allowtransparency="true">
		<?php no_frame_support(); ?>
	</iframe>
</td>
<td class="tbldbg" style="vertical-align: top; width: 0.3cm; max-width: 0.3cm;
	min-width: 0.3cm; cursor: w-resize;"
	onclick="hideShowSB();" title="Hide/Show boards">
	<img src="<?php print $pineza->server; ?>images/4Balls.gif"
		style="margin-top: 1.0cm; width: 0.4cm; margin-left: -0.12cm;"
		alt="Hide/Show Boards" />
</td>
<td class="tbldbg" style="vertical-align: top;">
	<iframe id="board" src="<?php print $pineza->server; ?>board/index.php"
		class="board" allowtransparency="true">
		<?php no_frame_support(); ?>
	</iframe>
</td>
</tr>
</table>
<?php
telos_selidas();
?>
